package service;

import dao.impl.UserDaoImpl;
import lombok.Data;
import pojo.FastUser;

import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import javax.annotation.Resource;

/**
 * @Author: fancyears·milos·malvis
 * @Description:
 * @Date: Created in  2019/4/22 14:11
 * @Modified By:
 */
@Data
public class EntityService {
    private String name;

    @Resource/*(type = UserDaoImpl.class)*/
    //      1. 如果同时指定了name和type，则从Spring上下文中找到唯一匹配的bean进行装配，找不到则抛出异常
    //　　2. 如果指定了name，则从上下文中查找名称（id）匹配的bean进行装配，找不到则抛出异常。如果name属性一旦指定，就只会按照名称进行装配。
    //　　3. 如果指定了type，则从上下文中找到类型匹配的唯一bean进行装配，找不到或者找到多个，都会抛出异常
    //　　4. 如果既没有指定name，又没有指定type，则自动按照byName方式进行装配；如果没有匹配，则回退为一个原始类型进行匹配，如果匹配则自动装配；

    //    @Autowired与@Resource都可以用来装配bean. 都可以写在字段上,或写在setter方法上。
    private UserDaoImpl userDaoImpl;

    public EntityService() {
    }

    @PostConstruct//也可以在xml里定义init-method，也可以用PostConstruct注解
    public void afterInit() {
        System.out.println("EntityService afterInit method");
    }

    @PreDestroy//也可以在xml里定义destroy-method，也可以用PostConstruct注解
    public void beforeDestroy() {
        System.out.println("EntityService beforeDestroy method");
    }

    public FastUser getUser(Long id) {
        return userDaoImpl.getUser(id);
    }
}
